package parser;

import java.util.List;

import junit.framework.TestCase;

public class LexemiserTest extends TestCase {

	protected Lexemiser lexemiser;
	
	protected void setUp() throws Exception {
		super.setUp();
		
		lexemiser = new Lexemiser();
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	public void testPodzielNaLexemy01() {

		List<Lexem> l = null;
		try {
			l = lexemiser.podzielNaLexemy("all[fda](some[x]A = all[y]B)&(C<D)");
		} catch (WyjatekPrzyParsowaniu e) {
			assert(false);
		}
		
		assertTrue(l.get(0) instanceof NawiasKwaOtwierajacy);
		assertTrue(l.get(1) instanceof NawiasKwaZamykajacy);
		assertTrue(l.get(2) instanceof NawiasOkrOtwierajacy);
		assertTrue(l.get(3) instanceof True);
		assertTrue(l.get(4) instanceof NawiasOkrZamykajacy);
		assertTrue(l.get(5) instanceof RName);
		assertTrue(l.get(6) instanceof CName);
		assertTrue(l.get(7) instanceof CName);
		assertTrue(l.get(8) instanceof False);
		assertTrue(l.get(9) instanceof NawiasOkrZamykajacy);
		
	}
	
	public void testPodzielNaLexemy02() {	

		List<Lexem> l = null;
		try {
			l = lexemiser.podzielNaLexemy("all[fda](some[x]A = all[y]B)&(C<D)");
		} catch (WyjatekPrzyParsowaniu e) {
			assert(false);
		}
		
		assertTrue(l.get(0) instanceof NawiasKwaOtwierajacy);
		assertTrue(l.get(1) instanceof NawiasKwaZamykajacy);
		assertTrue(l.get(2) instanceof NawiasOkrOtwierajacy);
		assertTrue(l.get(3) instanceof True);
		assertTrue(l.get(4) instanceof NawiasOkrZamykajacy);
		assertTrue(l.get(5) instanceof RName);
		assertTrue(l.get(6) instanceof CName);
		assertTrue(l.get(7) instanceof CName);
		assertTrue(l.get(8) instanceof False);
		assertTrue(l.get(9) instanceof NawiasOkrZamykajacy);
		
	}
	
	public void testPodzielNaLexemy03() {	
		
		List<Lexem> l = null;
		try {
			l = lexemiser.podzielNaLexemy("all[fda](some[x]A = all[y]B)&(C<D)");
		} catch (WyjatekPrzyParsowaniu e) {
			assert(false);
		}
		
		assertTrue(l.get(0) instanceof KwantyfikatorOgolny);
		assertTrue(l.get(1) instanceof NawiasKwaOtwierajacy);
		assertTrue(l.get(2) instanceof RName);
		assertTrue(l.get(3) instanceof NawiasKwaZamykajacy);
		assertTrue(l.get(4) instanceof NawiasOkrOtwierajacy);
		assertTrue(l.get(5) instanceof KwantyfikatorSzczegolny);
		assertTrue(l.get(6) instanceof NawiasKwaOtwierajacy);
		assertTrue(l.get(7) instanceof RName);
		assertTrue(l.get(8) instanceof NawiasKwaZamykajacy);
		assertTrue(l.get(9) instanceof CName);
		assertTrue(l.get(10) instanceof Rownosc);
		assertTrue(l.get(11) instanceof KwantyfikatorOgolny);
		assertTrue(l.get(12) instanceof NawiasKwaOtwierajacy);
		assertTrue(l.get(13) instanceof RName);
		assertTrue(l.get(14) instanceof NawiasKwaZamykajacy);
		assertTrue(l.get(15) instanceof CName);
		assertTrue(l.get(16) instanceof NawiasOkrZamykajacy);
		assertTrue(l.get(17) instanceof Koniunkcja);
		assertTrue(l.get(18) instanceof NawiasOkrOtwierajacy);
		assertTrue(l.get(19) instanceof CName);
		assertTrue(l.get(20) instanceof Inkluzja);
		assertTrue(l.get(21) instanceof CName);
		assertTrue(l.get(22) instanceof NawiasOkrZamykajacy);
	}


}
